#ifndef NODO_H
#define NODO_H

#include <iostream>

template< class T > class Lista;
template< class T > class Rala;

template< class T >
class Nodo {
	friend class Lista< T >;

    
public:
    Nodo(const int &, const T &);
    Nodo *verSiguiente() const;
    void cambiarValor(const T &);
    const T & valor() const;
    bool operator==(const Nodo< T > &otro) const;   
    
private:
    int indice;
    T elemento;
    Nodo< T > *proximo;

};

template< class T >
Nodo<T> :: Nodo(const int &i, const T &dato) {
        indice = i;
        elemento = dato;
        proximo = NULL;
}

template< class T >
Nodo< T > *Nodo< T >::verSiguiente() const {
     return proximo;
}

template< class T >
void Nodo< T >::cambiarValor(const T & nuevoValor) {
     elemento = nuevoValor;
}

template< class T >
const T& Nodo<T>:: valor() const {
	return elemento;
}

template< class T >
bool Nodo< T >::operator==(const Nodo<T> &otra) const {
     return ( indice == otra.indice && elemento == otra.elemento );
}
 
#endif
